package br.com.esporte.negocios.controlador.imp;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.esporte.negocios.controlador.IControladorGrupoEsporteGrupo;
import br.com.esporte.negocios.entidade.imp.GrupoEsporteGrupo;
import br.com.esporte.negocios.entidade.imp.Usuario;
import br.com.esporte.negocios.entidade.util.TipoEsporteGrupoEnum;
import br.com.esporte.negocios.exeption.EsporteException;
import br.com.esporte.negocios.exeption.NegociosException;
import br.com.esporte.repositorio.DAO.imp.GrupoEsporteGrupoDAO;
import br.com.esporte.repositorio.filtro.imp.FiltroGrupoEsporteGrupo;

/**
 * @author Milton Domingues
 */
@Service
public class ControladorGrupoEsporteGrupo extends ControladorGenerico<GrupoEsporteGrupo, Long, FiltroGrupoEsporteGrupo, GrupoEsporteGrupoDAO> implements IControladorGrupoEsporteGrupo {

	@Autowired
	public ControladorGrupoEsporteGrupo(GrupoEsporteGrupoDAO grupoEsporteGrupoDAO) {
		super(grupoEsporteGrupoDAO);
	}

	@Override
	public List<GrupoEsporteGrupo> consultarEsporteGrupoUsuario(TipoEsporteGrupoEnum tipo, Usuario usuario){
		return this.getRepositorioDAO().consultarEsporteGrupoUsuario(tipo, usuario);
	}

	@Override
	public void inserir(GrupoEsporteGrupo vo, Usuario usuario) {
		vo.setUsuarios(Arrays.asList(vo.getPresidente()));
		super.inserir(vo, usuario);
	}

	@Override
	public void resolverPerDependencias(GrupoEsporteGrupo vo, Usuario usuario) {

	}

	@Override
	public void resolverPosDependencias(GrupoEsporteGrupo vo, Usuario usuario) {

	}

	@Override
	public void tratarDadosEntidade(GrupoEsporteGrupo vo) {

	}

	@Override
	public void validarAlteracao(GrupoEsporteGrupo vo) {
		Collection<EsporteException> erros = new ArrayList<EsporteException>();
		this.validarEntidade(vo, erros);
		if (erros.size() > 0) {
			throw new NegociosException(erros);
		}
	}

	private void validarEntidade(GrupoEsporteGrupo vo, Collection<EsporteException> erros) {

	}

	@Override
	public void validarExclusao(GrupoEsporteGrupo vo) {

	}

	@Override
	public void validarInclusao(GrupoEsporteGrupo vo) {
		Collection<EsporteException> erros = new ArrayList<EsporteException>();
		this.validarEntidade(vo, erros);
		if (erros.size() > 0) {
			throw new NegociosException(erros);
		}
	}

	@Override
	public void validarUnicidade(GrupoEsporteGrupo vo) {

	}
}
